﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DiscoveryLogic.DataViz.NetworkDiagram.NetworkData;

namespace DiscoveryLogic.DataViz.NetworkDiagram
{
    /// <summary>
    /// 
    /// </summary>
    [Serializable]
    public class GraphMetaData
    {
        #region props
        private string _GraphName;
        /// <summary></summary>
        public string GraphName
        {
            get
            {
                return this._GraphName;
            }
            set
            {
                this._GraphName = value;
            }
        }

        private string[] _NetworkNames;
        /// <summary></summary>
        public string[] NetworkNames
        {
            get
            {
                return this._NetworkNames;
            }
            set
            {
                this._NetworkNames = value;
            }
        }

        private EntityType[] _IncludedEntityTypes;
        /// <summary></summary>
        public EntityType[] IncludedEntityTypes
        {
            get
            {
                return this._IncludedEntityTypes;
            }
            set
            {
                this._IncludedEntityTypes = value;
            }
        }

        private LinkType[] _IncludedLinkTypes;
        /// <summary></summary>
        public LinkType[] IncludedLinkTypes
        {
            get
            {
                return this._IncludedLinkTypes;
            }
            set
            {
                this._IncludedLinkTypes = value;
            }
        }

        private int _VerticeCount;
        /// <summary></summary>
        public int VerticeCount
        {
            get
            {
                return this._VerticeCount;
            }
            set
            {
                this._VerticeCount = value;
            }
        }

        private int _EdgeCount;
        /// <summary></summary>
        public int EdgeCount
        {
            get
            {
                return this._EdgeCount;
            }
            set
            {
                this._EdgeCount = value;
            }
        }

        private double _Density;
        /// <summary></summary>
        public double Density
        {
            get
            {
                return this._Density;
            }
            set
            {
                this._Density = value;
            }
        }

        private string _MostPopularVerticeName;
        /// <summary>vertice that have the biggest indegree</summary>
        public string MostPopularVerticeName
        {
            get
            {
                return this._MostPopularVerticeName;
            }
            set
            {
                this._MostPopularVerticeName = value;
            }
        }

        private string _MostExpansiveVerticeName;
        /// <summary>vertice that has the biggest outdegree</summary>
        public string MostExpansiveVerticeName
        {
            get
            {
                return this._MostExpansiveVerticeName;
            }
            set
            {
                this._MostExpansiveVerticeName = value;
            }
        }

        private double? _MinDistance;
        /// <summary></summary>
        public double? MinDistance
        {
            get
            {
                return this._MinDistance;
            }
            set
            {
                this._MinDistance = value;
            }
        }

        private double? _MaxDistance;
        /// <summary></summary>
        public double? MaxDistance
        {
            get
            {
                return this._MaxDistance;
            }
            set
            {
                this._MaxDistance = value;
            }
        }

        private double? _AvgDistance;
        /// <summary></summary>
        public double? AvgDistance
        {
            get
            {
                return this._AvgDistance;
            }
            set
            {
                this._AvgDistance = value;
            }
        }

        private double? _DistanceSD;
        /// <summary></summary>
        public double? DistanceSD
        {
            get
            {
                return this._DistanceSD;
            }
            set
            {
                this._DistanceSD = value;
            }
        }
        #endregion
    }
}
